package com.itheima.info.manger.controller;

import com.itheima.info.manger.domain.Student;
import com.itheima.info.manger.service.StudentService;
import sun.security.krb5.SCDynamicStoreConfig;

import java.util.Scanner;
/*
    客服类： 专门用来和用户打交道的
        1. 接收用户键盘录入的数据      -- 用户请求
        2. 找业务员完成具体的业务功能操作
        3. 根据业务员的反馈结果,来给出用户相关的一个响应信息
 */
public class StudentController {
    StudentService studentService = new StudentService();
    Scanner sc = new Scanner(System.in);
    //开启学生管理系统,并展示学生管理系统菜单
    public void start() {

        lo:
        while (true) {
            System.out.println("--------欢迎来到 <学生> 管理系统--------");
            System.out.println("请输入您的选择: 1.添加学生  2.删除学生  3.修改学生  4.查看学生  5.退出");
            String choice = sc.next();
            switch (choice) {
                case "1":
                    //System.out.println("1.添加学生");
                    addStudent();
                    break;
                case "2":
                    //System.out.println("2.删除学生");
                    deleteStudentById();
                    break;
                case "3":
                    //System.out.println("3.修改学生");
                    updateStudent();
                    break;
                case "4":
                    //System.out.println("4.查看学生");
                    findAllStudents();
                    break;
                case "5":
                    System.out.println("感谢您的使用");
                    break lo;
                default:
                    System.out.println("您输入有误,请重新输入");
                    break;

            }
        }
    }
    //客服中的修改学生功能
    private void updateStudent() {
        //1.键盘录入要删除的学生id
        Scanner sc= new Scanner(System.in);
        System.out.println("请输入需要修改的学生学号:");
        String updateId;
        while(true){
            updateId= sc.next();

            //2.查找这个要修改的学生对象是否存在
            boolean exsits=studentService.isExists(updateId) ;
            if(exsits){
                break;
            }{
                System.out.println("不存在,重新输入");
            }
        }

        //3.让用户录入要修改的学生对象信息
        System.out.println("请输入新姓名:");
        String name=sc.next();
        System.out.println("请输入新年龄:");
        String age=sc.next();
        System.out.println("请输入新出生日期:");
        String birthday=sc.next();

        //4.根据新的学生信息打包,封装新的学生对象
        Student newStudent=new Student();
        newStudent.setSid(updateId);
        newStudent.setName(name);
        newStudent.setAge(age);
        newStudent.setBirthday(birthday);

        //5.指挥业务员进行修改业务,将要修改的学生学号和新的学生对象输入方法中
        studentService.updateStudentById(updateId,newStudent);

        //6.给出修改成功的提示信息
        System.out.println("修改成功");


    }


    //客服中的删除学生功能
    private void deleteStudentById() {
        String delId;
        while(true){
            //1.键盘录入要删除的学生id
            System.out.println("您要删除的学生id");
            delId= sc.next();
            //2.判断id是否存在,如果不存在,则需要一直重复录入
            boolean exists=studentService.isExists(delId);
            if(!exists){
                System.out.println("您输入的id不存在,请重输");
            }else{
                break;
            }
        }
        //3.调用业务员中的deleteStudentById方法根据id删除学生
        studentService.deleteStudentById(delId);
        //4.提示删除成功
        System.out.println("删除成功");

    }


    //客服中的查找学生功能
    private void findAllStudents() {
        //1.指挥业务员进查看业务,把数据都查出来
        Student[] stus=studentService.findAllStudent();

        //2.根据业务员返回的数据来组织对应的查看逻辑;
        if(stus==null){
            System.out.println("无信息,请添加后重试");
        }else{
            System.out.println("学号\t\t姓名\t年龄\t生日");
            for (int i = 0; i < stus.length; i++) {
                Student stu = stus[i];
                if (stu != null) {
                    System.out.println(stu.getSid() + "\t" + stu.getName() + "\t" + stu.getAge() + "\t\t" + stu.getBirthday());
                }
            }
        }
            //2.1系统没有数据,返回null;
            //2.2系统有数据;
        //3.没有数据,提示用户:无信息,请添加后重试
        //4.有数据遍历数组,展示数据
    }


    //客服中的添加学生功能
    public void addStudent() {
        //1.接受用户录入的学生信息
        System.out.println("请输入学生id:");
        String id ;
        while(true){
           id = sc.next();
            //指挥业务员去校验一下当前录入的id是否已经被占用;
            boolean exist =studentService.isExists(id);
            if(exist){
                //存在,让用户重新输入学号,提示当前学号已被占用
                System.out.println("当前学号已被占用");
            }else{
                //不存在,可以使用
                break;
            }
        }
        System.out.println("请输入学生姓名:");
        String name = sc.next();
        System.out.println("请输入学生年龄");
        String age = sc.next();
        System.out.println("请输入学生出生日期:");
        String birthday = sc.next();

        //2.将录入的新数据封装为学生对象
        Student stu = new Student();
        stu.setSid(id);
        stu.setName(name);
        stu.setAge(age);
        stu.setBirthday(birthday);
        //把封装好的对象交给业务员,让业务员进行添加操作

        boolean res = studentService.addStudent(stu);

        //3.判断是否添加成功,将添加结果打印在控制台
        if (res) {
            System.out.println("添加成功");
        } else {
            System.out.println("添加失败");
        }

    }
}
